<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <link rel="Stylesheet" type="text/css" href=
  "../../default.css" />
  <meta http-equiv="Content-Type" content=
  "text/html; charset=utf-8" />

  <title>Генератор ключей: .Net-версия</title>
  <style type="text/css">
/*<![CDATA[*/
    div.c2 {text-align: center}
    p.c1 {color:red;}
    /*]]>*/
  </style>
</head>

<body>
  <h1>Генераторы ключей: .Net-версия</h1>

  <h3>Описание</h3>

  <p>.Net-версия генератора ключей преставляет собой сборку,
  содержащую все необходимое для генерации серийных номеров.
  Исходные коды находятся в каталоге <strong>Keygen\Net</strong> в
  виде двух проектов: KeyGen (непосредственно генератор серийных
  номеров) и Usage (пример использования генератора).</p>

  <p class="c1">Генератор поставляется в исходных кодах, чтобы
  иметь возможность пересобрать его под нужную версию .Net
  Framework, однако крайне не рекомендуется вносить изменения в его
  код. В будущих версиях VMProtect возможно добавление новых
  возможностей в генератор, что приведет к необходимости повторной
  модификации кода. Также возможно появление трудноуловимых ошибок.
  В случае нахождения ошибки в оригинальном коде генератора или
  пожеланий по его улучшению - обращайтесь в службу
  поддержки.</p>

  <h3>Использование генератора</h3>

  <p>Возьмите за основу код из проекта <strong>Usage</strong>,
  добавьте в Ваш проект ссылку на сборку VMProtect.KeyGen.dll,
  после чего Вы сможете генерировать серийные номера в вашем
  приложении. Для нормальной работы генератор должен понимать,
  к какому продукту Вы собираетесь генерировать серийные номера.
  Для этого на закладке "Лицензии" VMProtect нажмите кнопку
  «Экспорт» и в выпадающем списке выберите «Параметры для
  KeyGen.Net». В текстовом поле ниже появятся несколько строк
  текста, которые необходимо скопировать и перенести в Ваше
  приложение в виде строковой константы.</p>

  <p>Пример вызова генератора представлен ниже:</p>
  <pre>
try
{
        string data = @""; // put the exported data here
        Generator g = new Generator(data);
        g.UserName = "John Doe";
        g.EMail = "john@doe.com";
        g.ExpirationDate = DateTime.Now.AddMonths(1);
        g.MaxBuildDate = DateTime.Now.AddYears(1);
        g.RunningTimeLimit = 15;
        g.HardwareID = "AQIDBAgHBgU=";
        g.UserData = new byte[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
        string serial = g.Generate();
        Console.WriteLine("Serial number:\n{0}\n", serial);
}
catch (Exception ex)
{
        Console.WriteLine("Error: {0}", ex);
}
        
</pre>

  <p>Строку, скопированную в окне экспорта VMProtect, необходимо
  поместить в переменную <strong>data</strong>, которая будет
  передана параметром в конструктор класса генератора серийных
  номеров. В случае каких-либо проблем с разбором данных продукта,
  конструктор выбросит исключение с описанием проблемы. Если
  конструктор отработал успешно, то генератор готов к созданию
  серийных номеров.</p>

  <p>Серийный номер может содержать различную информацию, которая
  задается через свойства генератора. Пример выше показывает, как
  заполнить абсолютно все поля серийного номера. Отдельные поля
  имеют ограничения. Например, поля <strong>User Name</strong> и
  <strong>E-Mail</strong> не могут принять строки, которые в
  кодировке UTF-8 будут иметь длину, превышающую 255 символов. В
  случае подачи некорректных данных, свойства выбрасывают исключения с
  описанием проблемы.</p>

  <p>По окончании настройки генератора вызывается метод
  <strong>Generate()</strong>, который и создает серийный номер. На
  этом этапе происходит компоновка всех данных номера, подсчет
  контрольных сумм и, непосредственно, шифрование. В случае, если
  объем данных превышает максимально допустимую длину, метод выбросит
  исключение.</p>

  <p>В случае, если необходимо сгенерировать несколько серийных
  номеров, можно использовать класс генератора несколько раз, не
  пересоздавая его. Чтобы "очистить" любое из свойств генератора,
  ему нужно присвоить значение <strong>null</strong>.</p><br />
  <br />
  <br />
  <br />
  <br />
  <hr noshade="noshade" size="1" />

  <div align="center">
    © 2006-2015 Copyright VMProtect Software
  </div>
</body>
</html>
